package makabakaquestionnaire.zutsoftware.system.service.Impl;

import makabakaquestionnaire.zutsoftware.entity.Users;
import makabakaquestionnaire.zutsoftware.mapper.UsersMapper;
import makabakaquestionnaire.zutsoftware.system.entity.Course;
import makabakaquestionnaire.zutsoftware.system.entity.CourseUser;
import makabakaquestionnaire.zutsoftware.system.mapper.CourseMapper;
import makabakaquestionnaire.zutsoftware.system.mapper.CourseUserMapper;
import makabakaquestionnaire.zutsoftware.system.service.ICourseService;
import makabakaquestionnaire.zutsoftware.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;


/**
 * 课程信息Service业务层处理
 *
 * @author wjf
 * @date 2022-03-13
 */
@Service
public class CourseServiceImpl implements ICourseService {
    @Autowired
    private CourseMapper courseMapper;
    @Autowired
    private CourseUserMapper courseUserMapper;
    @Autowired
    private UsersMapper usersMapper;


    /**
     * 查询课程信息
     *
     * @param courseId 课程信息ID
     * @return 课程信息
     */
    @Override
    public Course selectCourseById(Long courseId) {
        return courseMapper.selectCourseById(courseId);
    }

    /**
     * 查询已选该课的课人员信息
     *
     * @param courseUser：即courseId
     * @return
     */
    @Override
    public List<Users> selectUsersList(CourseUser courseUser) {
        List<CourseUser> courseUsers = courseUserMapper.selectCourseUserList(courseUser);
        List<Users> usersList = new ArrayList<>();
        for (CourseUser cs : courseUsers) {
            Users user = usersMapper.selectUsersById(cs.getUserId());
            usersList.add(user);
        }
        return usersList;
    }

    /**
     * 查询用户的选课信息
     *
     * @param courseUser：即UserId
     */
    public List<Course> selectedCoursesList(CourseUser courseUser) {
        List<CourseUser> courseUsers = courseUserMapper.selectCourseUserList(courseUser);
        List<Course> courseList = new ArrayList<>();
        for (CourseUser cs : courseUsers) {
            Course course = courseMapper.selectCourseById(cs.getCourseId());
            courseList.add(course);
        }
        return courseList;
    }

    /**
     * 查询课程信息列表
     *
     * @param course 课程信息
     * @return 课程信息
     */
    @Override
    public List<Course> selectCourseList(Course course) {
        return courseMapper.selectCourseList(course);
    }

    /**
     * 新增课程信息
     *
     * @param course 课程信息
     * @return 结果
     */
    @Override
    public int insertCourse(Course course) {
        course.setCreateTime(DateUtils.getNowDate());
        return courseMapper.insertCourse(course);
    }

    /**
     * 修改课程信息
     *
     * @param course 课程信息
     * @return 结果
     */
    @Override
    public int updateCourse(Course course) {
        course.setUpdateTime(DateUtils.getNowDate());
        return courseMapper.updateCourse(course);
    }

    /**
     * 批量删除课程信息
     *
     * @param courseIds 需要删除的课程信息ID
     * @return 结果
     */
    @Override
    public int deleteCourseByIds(Long[] courseIds) {
        return courseMapper.deleteCourseByIds(courseIds);
    }

    /**
     * 删除课程信息信息
     *
     * @param courseId 课程信息ID
     * @return 结果
     */
    @Override
    public int deleteCourseById(Long courseId) {
        return courseMapper.deleteCourseById(courseId);
    }

}